package com.csair.seam.domain.service;

import java.util.List;

import org.springframework.cache.annotation.Cacheable;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.csair.seam.domain.model.entity.Equip;
import com.csair.seam.domain.model.entity.EquipUserAlterNotice;
import com.csair.seam.domain.model.param.EquipParam;


public interface IEquipService extends IService<Equip> {

	/**
	 * @param userCode
	 * @return
	 * @description 根据用户编码获取设备列表
	 */
//	@Cacheable(cacheNames = "Seam_My_Equip",key = "#userCode")
	List<Equip> findListByUserCode(String userCode);

	/**
	 * @param userCode
	 * @return
	 * @description 查询我的设备的总数和总价值
	 */
	Equip findMyEquipInfo(String userCode);

	/**
	 * @param equipCode
	 * @return
	 * @description 根据设备编码获取设备详情
	 */
	Equip findEquipByCode(String equipCode);

	/**
	 * @param param
	 * @return
	 * @description 设备列表分页查询
	 */
	Page<Equip> findEquipPage(EquipParam param);

	/**
	 * @return
	 * @description 查询设备使用人变动通知列表
	 */
	List<EquipUserAlterNotice> findEquipUserAlterNoticeList(String equipCode);

	/**
	 * @param id
	 * @return
	 * @description 更新使用人变动通知状态为已通过
	 */
	int updateEquipUserAlterNotice(Integer id);

	/**
	 * 得到所有有效到EquipCode
	 * @return
	 */
	List<String> findAllEquipCode();

	/**
	 * 根据 equipCode 查询所有 EquipUserAlterNotice
	 * @param equipCode
	 * @return
	 */
	List<EquipUserAlterNotice> findEquipUserAlterNoticeByEquipCode(String equipCode);

	/**
	 * 根据 equipCode 更新数据库
	 * @param equipCode
	 */
	void updateEquipUserAlterNoticeByEquipCode(String equipCode);

	/**
	 * 验证equipCodes是有效性
	 * @param equipCodes
	 */
	public void validatedEquipUserAlterNotice(List<String> equipCodes);
}
